<?php

namespace App\Repositories\RBAC;

use App\Repositories\BaseRepository;

/**
 * Interface RoleRepository.
 *
 * @package namespace App\Repositories;
 */
interface RoleRepository extends BaseRepository
{
    //
    /**
     * 判断 某角色 下 是否有用户
     * @param $role_id
     * User: Zhangxy
     * Date: 2018-08-15
     * @return mixed
     */
    public function hasUsers($role_id);

    /**
     * 判断 某角色 下 是否有 权限项
     * @param $role_id
     * User: Zhangxy
     * Date: 2018-08-15
     * @return mixed
     */
    public function hasPermItems($role_id);

    /**
     * 保存某角色的所有权限项
     * @param $id
     * @param array $perms
     * @param int $root_perm_id
     * User: Zhangxy
     * Date: 2018-08-15
     * @return bool
     */
    public function savePermissions($id, $perms = [], $root_perm_id = 0);


    /**
     * 获取某角色的所有权限项ID
     * @param $role_ids
     * User: Zhangxy
     * Date: 2018-08-15
     * @return array
     */
    public function attachedPermissionIds($role_ids);

    /**
     * 获取某角色的所有权限项
     * @param $role_ids
     * @param array $permWhere
     * User: Zhangxy
     * Date: 2018-08-15
     * @return array
     */
    public function rolePermissions($role_ids, $permWhere = []);

    /**
     * 获取某角色的所有菜单项
     * @param $role_ids
     * User: Zhangxy
     * Date: 2018-08-15
     * @return array
     */
    public function roleMenus($role_ids);
}
